package org.web.webdisplay.sdk.dto.query;

import java.util.*;
import lombok.Getter;
import lombok.Setter;
import org.web.base.domain.*;
import jakarta.validation.constraints.Max;
import jakarta.validation.constraints.NotNull;

@Setter
@Getter
public class QueryDisplayInfoRequest extends ExtendQueryBase {
    /**
    * 圈定 'specifiedAttributeSet' 返回属性信息范围，指定的属性信息与列定义名称保持一致。
    */
    private static final Set<String> COLUMN_SET = new HashSet<>(Arrays.asList("display_info_id", "app_name", "page_name", "intl_language", "display_info", "display_info_pre_version", "create_time", "update_time", "is_delete"));

    /**
    * 圈定 'specifiedAttributeSet' 返回属性信息范围，指定的属性信息与列定义名称保持一致。
    */
    private static final Set<String> SORT_COLUMN_SET = new HashSet<>(Arrays.asList("display_info_id", "app_name", "page_name", "intl_language", "display_info", "display_info_pre_version", "create_time", "update_time", "is_delete"));

    @Override
    public Set<String> getColumnsSet() {
        return COLUMN_SET;
    }

    @Override
    public Set<String> getSortColumnsSet() {
        return SORT_COLUMN_SET;
    }

    /**
    * 根据 'displayInfoId' 精确查询.
    */
    private Integer displayInfoId;

    /**
    * 根据 'displayInfoIdSet' 范围查询.
    */
    private Set<Integer> displayInfoIdSet;

    /**
    * 根据 'appName' 精确查询.
    */
    private String appName;

    /**
    * 根据 'fuzzyAppName' 模糊查询.
    */
    private String fuzzyAppName;

    /**
    * 根据 'appNameSet' 范围查询.
    */
    private Set<String> appNameSet;

    /**
    * 根据 'pageName' 精确查询.
    */
    private String pageName;

    /**
    * 根据 'fuzzyPageName' 模糊查询.
    */
    private String fuzzyPageName;

    /**
    * 根据 'pageNameSet' 范围查询.
    */
    private Set<String> pageNameSet;

    /**
    * 根据 'intlLanguage' 精确查询.
    */
    private String intlLanguage;

    /**
    * 根据 'intlLanguageSet' 范围查询.
    */
    private Set<String> intlLanguageSet;

    /**
    * 设置大于 'createTime' 查询.
    */
    private Date moreThanCreateTime;

    /**
    * 设置小于 'createTime' 查询.
    */
    private Date lessThanCreateTime;

    /**
    * 设置大于等于 'createTime' 查询.
    */
    private Date equalAndMoreThanCreateTime;

    /**
    * 设置小于等于 'createTime' 查询.
    */
    private Date equalAndLessThanCreateTime;

    /**
    * 设置大于 'updateTime' 查询.
    */
    private Date moreThanUpdateTime;

    /**
    * 设置小于 'updateTime' 查询.
    */
    private Date lessThanUpdateTime;

    /**
    * 设置大于等于 'updateTime' 查询.
    */
    private Date equalAndMoreThanUpdateTime;

    /**
    * 设置小于等于 'updateTime' 查询.
    */
    private Date equalAndLessThanUpdateTime;

    /**
    * 根据 'isDelete' 精确查询.
    */
    private String isDelete;


    @NotNull(message = "pageSize 不能为空")
    @Max(value = 200, message = "pageSize 不能大于200")
    public Integer getPageSize() {
        return super.getPageSize();
    }
}